// File: ProtocolParser.h
//
// Created by 唐建 on 2023/12/3.
//

#ifndef CPP_REMOTE_UBUNTU_PROTOCOLPARSER_H
#define CPP_REMOTE_UBUNTU_PROTOCOLPARSER_H

#include "../json/json.hpp"
#include <memory>

struct RecvMsg {
    std::string mesid;
    std::string content;
    int pageSize;
    int pageNum;
};

NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(RecvMsg, mesid, content, pageSize, pageNum);

struct resp {
    std::string mesid;
    nlohmann::json messagej;
};

using PRecvMsg = std::unique_ptr<RecvMsg>;

class ProtocolParser {
public:

    static PRecvMsg getPRecvMsg(std::string msg)
    {
        nlohmann::json json = nlohmann::json::parse(msg);
        return std::make_unique<RecvMsg>(json.get<RecvMsg>());
    }

    static nlohmann::json getSendmsg(std::string msgid, nlohmann::json &msgJson)
    {
        nlohmann::json jtmp;
        jtmp["resp"] = msgid;
        jtmp["message"] = msgJson;

        return jtmp;
    }
};

#endif //CPP_REMOTE_UBUNTU_PROTOCOLPARSER_H
